﻿//////////////////////////////////////////////////////////////////////////////
//
//  Copyright © 1998-2024 Glodon Company Limited.  All rights reserved.
//
//  Use of this software is subject to the terms of the Glodon license
//  agreement provided at the time of installation or download, or which
//  otherwise accompanies this software in either electronic or hard copy form.  
//
//////////////////////////////////////////////////////////////////////////////


#pragma once

#include "GcmpGeometryInterface.h"

namespace gcmp
{
    class Vector3d;

    /// \brief 曲线与体的相交数据
    class GCMP_GEOMETRY_INTERFACE_EXPORT ICurveBodyIntersection
    {
    public:        
        /// \brief  获取交点坐标
        ///
        /// \return 返回交点坐标
        virtual Vector3d GetIntersectPoint() const = 0;

        /// \brief  获取交点在曲线上的参数
        ///
        /// \return 返回交点在曲线上的参数
        virtual double GetParamOnCurve() const = 0;

        /// \brief  获取交点所在的面序号
        ///
        /// \return 返回交点所在的面序号
        virtual int GetFaceIndex() const = 0;

        /// \brief  获取交点所在的环序号
        ///
        /// \return 返回交点所在的环序号
        virtual int GetLoopIndex() const = 0;

        /// \brief  获取交点所在的边序号(此时交点在环的边界上)
        ///
        /// \return 返回交点所在的边序号
        virtual int GetCoedgeIndex() const = 0;

        /// \brief  获取交点是否在体边的端点上
        ///
        /// \return 返回交点是否在体边的端点上； -1：不在端点，0：起点，1：终点
        virtual int GetPointIndex() const = 0;

        /// \brief  析构函数
        virtual ~ICurveBodyIntersection(){}
    };
}
